#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>

//首先一个人需要存储的信息定义出来，因为每个人存储的信息大小都是一样的，所以用宏定义的方式来定义
#define SEX 5//性别6个字节大小
#define NAME 20//名字使用20个字节大小
#define TELEPHONE 12//电话号码12个字节大小
#define ADDRESS 30 //地址30个字节大小



//每个人需要存储的信息
struct personal_information {
	char sex[SEX];
	char name[NAME];
	char telephone[TELEPHONE];
	char address[ADDRESS];
};





//通讯录也是一个结构体                  只是说这个结构体需要存储在一个动态开辟的空间中
struct contact{
	struct personal_information* data;//这个指针就是用来指向通信录中的每个人的信息的
	int size;//用来记录当前通讯录中的联系人的个数       
	int capacity;//这个变量是用来记录当前通讯录的最大容量      默认最大容量是三个，每次到达最大容量的时候扩充原来大小的一倍
};




void Initialize(struct contact* con);//将通讯录进行初始化

void AddContact(struct contact* con);//添加联系人

void ShowContact(struct contact* con);//显示所有的联系人

void SaveContact(struct contact* con);//将空间中存储的联系人保存在文件中

void FreeUp(struct contact* con);//将个人信息所占的空间进行释放

void DeleteContact(struct contact* con);//这个函数用于删除指定的联系人

void SearchContact(struct contact* con);//查找联系人

void ModifyContact(struct contact* con);//修改联系人的信息

void ClearContact(struct contact* con);//清空通讯录